  # -*- coding: utf-8 -*-

import db
reload( db)
from db import McfConnector



class Instance_Attribute():
	"""Description of an instance attribute"""


	def __init__( self, libmyCF, instance_attribute_id, instance_id, attribute_type_id, value):
		self.libmyCF = libmyCF
		self.instance_attribute_id = instance_attribute_id
		self.instance_id = instance_id
		self.attribute_type_id = attribute_type_id
		self.value = value


	def getInstance( self):
		return self.libmyCF.acquisitions.all_instances[self.instance_id]


	def getType( self):
		return self.libmyCF.ontology.all_attributes_type[ self.attribute_type_id ].getType()


	def getValue( self):
		return self.value


	def update( self, value=""):
		"""Update the value of this instance on the database"""
		
		# TODO: prendre n'importe quel type de valeur (au lieu d'une chaîne), la formater selon le type de l'attribut, et verifier qu'il y a le bon nombre d'informations
		
		if( value != ""): self.value = value
		
		query = "UPDATE Instance_Attributes SET value = \"%s\" WHERE instances_attributes_id=\"%s\""%( unicode(self.value).encode('utf-8'), self.instance_attribute_id)
		
		dict = { self.instance_attribute_id : Instance_Attribute( libmyCF=self.libmyCF, instance_attribute_id=self.instance_attribute_id, instance_id=self.instance_id, attribute_type_id=self.attribute_type_id, value=self.value )}
		self.libmyCF.acquisitions.all_instances_attributes.update( dict)
		
		return self.libmyCF.connector.mcfQueryExec( query)
